﻿
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- saved from url=(0014)about:internet -->
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:mssdk="winsdk" xmlns:script="urn:script" xmlns:build="urn:build" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Description" content="Debugging Multiple Targets"/>
<meta name="MSHAttr" content="PreferredSiteName:MSDN"/>
<meta name="MSHAttr" content="PreferredLib:/library/windows/hardware"/>
<title>Debugging Multiple Targets</title>

<meta name="MS-HAID" content="r07_use_operation_6930fe2c-a632-474c-9f8c-5bdd3aa9349d.xml"/>


<link rel="STYLESHEET" type="text/css" HREF="../common/backsdk4.css"/>





<style>
html,div { margin: 0; padding: 0;}

body {
	padding: 0px;
	margin: 0px;
	overflow: auto;
	height: 100%;
}

#winchm_template_button{
	float: right;
	width: 93px;
	top: 7px;
	position: relative;
	text-align: right;
	right: 5px;
	height: auto;
}

#winchm_template_top{
	padding: 0px;
	margin: 0px;
	border-bottom: 1px solid #9B9B9B;
	background-color: #B1CEFE;
}

#winchm_template_navigation{
	margin: 0px;
	padding-top: 7px;
	padding-left: 7px;
	padding-bottom: 3px;
	padding-right: 0px;
	font-size: 8.5pt;
	font-family: Arial, Helvetica, sans-serif;
	font-weight: normal;
	color: #585858;
}

#winchm_template_title{
	margin: 0px;
	padding-top: 4px;
	padding-left: 7px;
	padding-bottom: 7px;
	padding-right: 0px;
	font-size: 18px; 
	font-family: Verdana, Geneva, sans-serif;
	color: #363636;
}

#winchm_template_content{
	margin-top: 20px;
	margin-left: 15px;
	margin-bottom: 20px;
	margin-right: 15px;
	width: auto  !important;
	width: 100%;
}

#winchm_template_footer{
	border-width: 1px;
	border-color: #B1CEFE;
	border-top-style: solid;
	margin-top: 15px;
	margin-left: 15px;
	margin-bottom: 20px;
	margin-right: 15px;
	padding-top: 7px;
	padding-left: 0px;
	padding-bottom: 0px;
	padding-right: 0px;
	font-family: arial, helvetica, sans-serif;
	font-size: 8.5pt;
	color: #696969;
	width: auto;
	text-align: left;
}


#winchm_template_container{
	margin: 0px;
	padding: 0px;
	position: static;
	padding-bottom: 3px;
	overflow: auto;
	background-color: #FFFFFF;
}


@media print
{
#winchm_template_container{
	position: static;	
	margin: 0px;
	padding: 5px;
	
	width: auto;
	height: auto;
	overflow: auto;
}
#winchm_template_button{
visibility:hidden;
}
}

#winchm_template_navigation A:link	{text-decoration: none; color:#004080}
#winchm_template_navigation A:visited  {text-decoration: none; color: #004080}
#winchm_template_navigation A:active {text-decoration: none; color: #004080 }
#winchm_template_navigation A:hover {text-decoration: none;color: #0080FF}

A:link	{text-decoration: underline; color:#0033CC}
A:visited  {text-decoration: underline; color: #0033CC}
A:active {text-decoration: underline; color: #0033CC }
A:hover {text-decoration: underline;color: #FF0000;}
</style>
<script type="text/javascript">
function isMobile(){
Agent = window.navigator.userAgent;
if (Agent.indexOf("iPhone")>=1 || Agent.indexOf("iPad")>=1 || Agent.indexOf("iPod")>=1 || Agent.indexOf("Android")>=1){
return true;
}else{
return false;	
}

}
function d_onresize(){
if (window.navigator.userAgent.indexOf("MSIE")>=1){
document.getElementById('winchm_template_container').style.pixelWidth = document.body.offsetWidth - 3;
document.getElementById('winchm_template_container').style.pixelHeight = document.body.offsetHeight - document.getElementById('winchm_template_top').offsetHeight - 4;
}
document.getElementById('winchm_template_container').style.top = document.getElementById('winchm_template_top').offsetHeight + 'px';
}

function d_onbeforeprint(){
document.getElementById('winchm_template_container').style.width = 'auto';
document.getElementById('winchm_template_container').style.height = 'auto';
}

function d_onafterprint(){
d_onresize();
}

if(!isMobile()){

window.onload = d_onresize;
window.onresize = d_onresize;
window.onbeforeprint = d_onbeforeprint;
window.onafterprint = d_onafterprint;

document.write("<style>\n");
document.write("body {overflow: hidden;}\n");
document.write("#winchm_template_container {position: absolute;overflow: auto;top : 0px;right: 0px;bottom: 0px;left: 0px;}\n");
document.write("</style>\n");
}

</script>
</head>
<body><script language="JavaScript" type="text/JavaScript">
function syn(){
if(parent.nav.tree){
 if(parent.nav.tree.loaded){
  parent.nav.tree.selectNode(1402);
 }else{
  setTimeout("syn()",500);
}
  }else{
  setTimeout("syn()",500);
  }}
if(parent!=self){
  setTimeout("syn()",100);
}else{
  parent.location.href = "../../index.htm?page=debugger/debugging_multiple_targets.htm";
}
originalOnload = window.onload;
if(originalOnload==null){
window.onload = function(){parent.contentLoaded = true;};
}else{
window.onload = function(){originalOnload();parent.contentLoaded = true;};
}
</script> 


<div id="winchm_template_top">
	<div id="winchm_template_button"><A href="debugging_an_interrupt_storm.htm" title="Previous topic"><img id="winchm_template_prev" alt="Previous topic" src="../template2/btn_prev_n.gif" border="0"></a><A href="tracking_down_a_processor_hog.htm" title="Next topic"><img id="winchm_template_next" alt="Next topic" src="../template2/btn_next_n.gif" border="0"></a></div>
	<div id="winchm_template_navigation">Help &gt; 
<A href="introduction6.htm">Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)</A> &gt; <A href="debugging_techniques.htm">Debugging Techniques</A> &gt; <A href="standard_debugging_techniques.htm">Standard Debugging Techniques</A> &gt; </div>
	<div id="winchm_template_title">Debugging Multiple Targets</div>
</div>
<div id="winchm_template_container">
	<div id="winchm_template_content"><div id="mainSection"><p>You can debug multiple dump files or live user-mode applications at the same time. Each target contains one or more processes, and each process contains one or more threads.</p>
<p>These targets are also grouped into <i>systems</i>. Systems are sets of targets that are grouped together for easy identification and manipulation. Systems are defined as follows:</p>
<ul>
<li>
<p>Each kernel-mode or user-mode dump file is a separate system.</p>
</li>
<li>
<p>When you are debugging live user-mode applications on different computers (by using a <a href="#Bookmark1321">process server</a>, such as Dbgsrv), each application is a separate system.</p>
</li>
<li>
<p>When you are debugging live user-mode applications on the local computer, the applications are combined into a single system.</p>
</li>
</ul>
<p>The <i>current</i> or <i>active</i> system is the system that you are currently debugging.</p>
<h3><a id="acquiring_multiple_targets"></a><a id="ACQUIRING_MULTIPLE_TARGETS"></a>Acquiring Multiple Targets</h3>
<p>The first target is acquired in the usual manner.</p>
<p>You can debug additional live user-mode applications by using the <a href="#Bookmark2058"><b>.attach (Attach to Process)</b></a> or <a href="#Bookmark2076"><b>.create (Create Process)</b></a> command, followed by the <b>g (Go)</b> command.</p>
<p>You can debug additional dump files by using the <a href="#Bookmark2150"><b>.opendump (Open Dump File)</b></a> command, followed by the <b>g (Go)</b> command. You can also open multiple dump files when the debugger is started. To open multiple dump files, include multiple <b>-z</b> switches in the command, each followed by a different file name.</p>
<p>You can use the preceding commands even if the processes are on different systems. You must start a process server on each system and then use the -premote parameter with <b>.attach</b> or <b>.create</b> to identify the proper process server. If you use the <b>.attach</b> or <b>.create</b> command again without specifying the -premote parameter, the debugger attaches to, or creates, a process on the current system. </p>
<h3><a id="manipulating_systems_and_targets"></a><a id="MANIPULATING_SYSTEMS_AND_TARGETS"></a>Manipulating Systems and Targets</h3>
<p>When debugging begins, the current system is the one that the debugger most recently attached to. If an exception occurs, the current system switches to the system that this exception occurred on.</p>
<p>To close one target and continue to debug the other targets, use the <a href="#Bookmark2130"><b>.kill (Kill Process)</b></a> command. On Microsoft Windows XP and later versions of Windows, you can use the <a href="#Bookmark2080"><b>.detach (Detach from Process)</b></a> command or WinDbg's <a href="#Bookmark2914">Debug | Detach Debuggee</a> menu command instead. These commands detach the debugger from the target but leave the target running.</p>
<p>To control the debugging of multiple systems, you can use the following methods:</p>
<ul>
<li>
<p>The <a href="#Bookmark1958"><b>|| (System Status)</b></a> command displays information about one or more systems</p>
</li>
<li>
<p>The <a href="#Bookmark1959"><b>||s (Set Current System)</b></a> command enables you to select the current system</p>
</li>
<li>
<p>(WinDbg only)  The <a href="#Bookmark1233">Processes and Threads window</a> enables you display or select systems, processes, and threads </p>
</li>
</ul>
<p>By using these commands to select the current system, and by using the standard commands to <a href="#Bookmark1376">select the current process and thread</a>, you can determine the context of commands that display memory and registers.</p>
<p>However, you cannot separate execution of these processes. The <a href="#Bookmark1997"><b>g (Go)</b></a> command always causes all targets to execute together.</p>
<div class="alert"><b>Note</b>    We recommend that you do not debug live targets and dump targets together, because commands behave differently for each type of debugging. For example, if you use the <b>g (Go)</b> command when the current system is a dump file, the debugger begins executing, but you cannot break back into the debugger, because the break command is not recognized as valid for dump file debugging.  </div>
<div> </div></div></div>	
	<div id="winchm_template_footer">Copyright &copy; 2019. All rights 
reserved. (To change the copyright info, just edit it in template.)</div>
</div>

</body>
</html>
